package models

// AccountHistoryQueryParams 光子易账户账单查询参数
type AccountHistoryQueryParams struct {
	TransactedAtStart    string   `json:"transactedAtStart"`
	TransactedAtEnd      string   `json:"transactedAtEnd"`
	MemberID             string   `json:"memberId,omitempty"`
	AccountTransactionID string   `json:"accountTransactionId,omitempty"`
	Currency             string   `json:"currency,omitempty"`
	AccountType          string   `json:"accountType,omitempty"`
	MatrixAccount        string   `json:"matrixAccount,omitempty"`
	AccountNo            string   `json:"accountNo,omitempty"`
	TxnType              []string `json:"txnType,omitempty"`
	PageSize             int64    `json:"pageSize,omitempty"`
	PageIndex            int64    `json:"pageIndex,omitempty"`
}

// AccountHistoryInfo 光子易账户账单明细
type AccountHistoryInfo struct {
	MemberID         string  `json:"memberId"`
	AccountHistoryNo string  `json:"accountHistoryNo"`
	AccountNo        string  `json:"accountNo"`
	Amount           float64 `json:"amount"`
	BalanceFund      float64 `json:"balanceFund"`
	BatchID          string  `json:"batchId"`
	Currency         string  `json:"currency"`
	TransactedAt     string  `json:"transactedAt"`
	Sources          string  `json:"sources"`
	TransactionNotes string  `json:"transactionNotes"`
	TxnType          string  `json:"txnType"`
	VoucherID        string  `json:"voucherId"`
}

// AccountHistoryListResponse 光子易账户账单查询响应
type AccountHistoryListResponse struct {
	Code      string               `json:"code"`
	Msg       string               `json:"msg"`
	Data      []AccountHistoryInfo `json:"data"`
	Numbers   int                  `json:"numbers"`
	PageIndex int64                `json:"pageIndex"`
	PageSize  int64                `json:"pageSize"`
	Total     int64                `json:"total"`
}

// AccountBalanceQueryParams 实时金额查询参数
type AccountBalanceQueryParams struct {
	Currency      string `json:"currency"`
	AccountNo     string `json:"accountNo,omitempty"`
	MemberID      string `json:"memberId,omitempty"`
	AccountType   string `json:"accountType,omitempty"`
	MatrixAccount string `json:"matrixAccount,omitempty"`
}

// AccountBalanceInfo 实时金额信息
type AccountBalanceInfo struct {
	MemberID        string  `json:"memberId"`
	AccountNo       string  `json:"accountNo"`
	AccountType     string  `json:"accountType"`
	Currency        string  `json:"currency"`
	RealTimeBalance float64 `json:"realTimeBalance"`
	ReturnedAt      string  `json:"returnedAt"`
}

// AccountBalanceResponse 实时金额查询响应
type AccountBalanceResponse struct {
	Code string             `json:"code"`
	Msg  string             `json:"msg"`
	Data AccountBalanceInfo `json:"data"`
}

// AccountListQueryParams 金额账户列表查询参数
type AccountListQueryParams struct {
	AccountNo     string `json:"accountNo,omitempty"`
	MemberID      string `json:"memberId,omitempty"`
	MatrixAccount string `json:"matrixAccount,omitempty"`
}

// AccountListInfo 金额账户信息
type AccountListInfo struct {
	AccountNo       string  `json:"accountNo"`
	MemberID        string  `json:"memberId"`
	Currency        string  `json:"currency"`
	OwnerNo         string  `json:"ownerNo"`
	OwnerType       string  `json:"ownerType"`
	RealTimeBalance float64 `json:"realTimeBalance"`
}

// AccountListResponse 金额账户列表查询响应
type AccountListResponse struct {
	Code      string            `json:"code"`
	Msg       string            `json:"msg"`
	Data      []AccountListInfo `json:"data"`
	Numbers   int               `json:"numbers"`
	PageIndex int64             `json:"pageIndex"`
	PageSize  int64             `json:"pageSize"`
	Total     int64             `json:"total"`
}

// MatrixAccountQueryParams matrix账户信息查询参数
type MatrixAccountQueryParams struct {
	PageIndex      int64  `json:"pageIndex"`
	PageSize       int64  `json:"pageSize"`
	MatrixAccount  string `json:"matrixAccount,omitempty"`
	CreatedAtStart string `json:"createdAtStart,omitempty"`
	CreatedAtEnd   string `json:"createdAtEnd,omitempty"`
}

// MatrixAccountInfo matrix账户信息
type MatrixAccountInfo struct {
	CreatedAt         string `json:"createdAt"`
	MatrixAccount     string `json:"matrixAccount"`
	MatrixAccountName string `json:"matrixAccountName"`
	Status            string `json:"status"`
}

// MatrixAccountListResponse matrix账户信息查询响应
type MatrixAccountListResponse struct {
	Code      string              `json:"code"`
	Msg       string              `json:"msg"`
	Data      []MatrixAccountInfo `json:"data"`
	PageIndex int64               `json:"pageIndex"`
	PageSize  int64               `json:"pageSize"`
	Total     int64               `json:"total"`
}

// FundTransferListQueryParams 资金调拨明细查询参数
type FundTransferListQueryParams struct {
	PageIndex        int64  `json:"pageIndex,omitempty"`
	PageSize         int64  `json:"pageSize,omitempty"`
	CreatedAtStart   string `json:"createdAtStart,omitempty"`
	CreatedAtEnd     string `json:"createdAtEnd,omitempty"`
	CompletedAtStart string `json:"completedAtStart,omitempty"`
	CompletedAtEnd   string `json:"completedAtEnd,omitempty"`
	Status           string `json:"status,omitempty"`
	RequestNo        string `json:"requestNo,omitempty"`
	TransactionId    string `json:"transactionId,omitempty"`
	Direction        string `json:"direction,omitempty"`
	MemberId         string `json:"memberId,omitempty"`
}

// FundTransferListInfo 资金调拨明细信息
type FundTransferListInfo struct {
	CreatedAt      string  `json:"createdAt"`
	CompletedAt    string  `json:"completedAt"`
	TransactionId  string  `json:"transactionId"`
	Status         string  `json:"status"`
	ErrorCode      string  `json:"errorCode"`
	RequestNo      string  `json:"requestNo"`
	MemberId       string  `json:"memberId"`
	Currency       string  `json:"currency"`
	Direction      int     `json:"direction"`
	PayoutAmount   float64 `json:"payoutAmount"`
	FeeAmount      float64 `json:"feeAmount"`
	ReceivedAmount float64 `json:"receivedAmount"`
}

// FundTransferListResponse 资金调拨明细查询响应
type FundTransferListResponse struct {
	Code      string                 `json:"code"`
	Msg       string                 `json:"msg"`
	Data      []FundTransferListInfo `json:"data"`
	PageIndex int64                  `json:"pageIndex"`
	PageSize  int64                  `json:"pageSize"`
	Total     int64                  `json:"total"`
}

// AdminAccountListQueryParams 管理员查询金额账户列表参数
type AdminAccountListQueryParams struct {
	AccountNo     string `json:"accountNo,omitempty"`
	MemberID      string `json:"memberId,omitempty"`
	MatrixAccount string `json:"matrixAccount,omitempty"`
}

// AdminAccountListResponse 管理员查询金额账户列表响应
type AdminAccountListResponse struct {
	Code      string            `json:"code"`
	Msg       string            `json:"msg"`
	Data      []AccountListInfo `json:"data"`
	Numbers   int               `json:"numbers"`
	PageIndex int64             `json:"pageIndex"`
	PageSize  int64             `json:"pageSize"`
	Total     int64             `json:"total"`
}
